package cn.edu.njust.core;


import cn.edu.njust.pojo.po.User;

/**
 * 用户上下文信息
 *
 * @author wangs
 * @date 2025/4/13 21:29
 * @since 2.0.0
 */
public class UserContext {

    private static final ThreadLocal<User> userThreadLocal = new ThreadLocal<>();

    /**
     * 获取当前用户
     *
     * @return 当前用户
     */
    public static User getCurrentUser() {
        return userThreadLocal.get();
    }

    /**
     * 获取当前登录用户id
     *
     * @return 当前登录用户id
     * @since 3.0.0
     */
    public static Integer getCurrentUserId() {
        return getCurrentUser().getId();
    }

    /**
     * 获取当前登录用户名
     *
     * @return 当前登录用户名
     * @since 3.0.0
     */
    public static String getCurrentUserName() {
        return getCurrentUser().getName();
    }

    /**
     * 设置当前用户
     *
     * @param user 用户
     */
    public static void setCurrentUser(User user) {
        userThreadLocal.set(user);
    }

    /**
     * 移除当前用户id
     */
    public static void removeCurrentUser() {
        userThreadLocal.remove();
    }

    private UserContext() {
    }
}
